import axios from "axios";
import { getToken,removeToken } from "./index";
import router from "@/router"

// 1.根域名配置 =》 根据不同的环境切换
// 2.超出时间

// 3.请求拦截器、响应拦截器

const request = axios.create({
  baseURL: "http://geek.itheima.net/v1_0",
  timeout: 5000,
});
// 上面生成axios实例  为request

// 添加请求拦截器
// 在请求发送之前  做拦截  可以插入一些自定义的配置 [对参数进行处理]
// 多个接口都会以token（用户的一个标识数据）作为接口  判断权限的依据
// 往请求头中注入token  所有用到axios实例的接口请求    都自动携带上了token

request.interceptors.request.use(
  (config) => {
    const token = getToken();
    // 操作config 对象  注入token数据
    // 1.获取到token
    // 2.注入token   按照后端给的格式要求作token拼接
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
// 添加响应拦截器
// 在数据返回到客户端之前  做拦截  重点处理返回的数据
request.interceptors.response.use(
  (response) => {
    // 2XX  范围内的状态码都会触发该函数
    // 对响应成功的数据做点什么
    return response.data;
  },
  (error) => {
    // console.dir(error,"44")
    // 超出2xx  范围内的状态码都会触发该函数
    // 对响应错误做点什么
    if(error.response.status === 401){
      //  token失效   长时间进入网站不操作     token过期 一旦失效  不能再作为令牌标识使用   安全和隐私
      removeToken()
      router.navigate("/login")
      window.location.reload()

    }
    return Promise.reject(error);
  }
);

export { request };
